#ifndef _CRC32_H
#define _CRC32_H
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <stdint.h>

class CRC32{

    public:
        CRC32(void);
        ~CRC32(void);

        void Initialize(void);



        uint32_t FullCRC(const unsigned char *sData, uint32_t ulDataLength);
        void FullCRC(const unsigned char *sData, uint32_t ulLength, uint32_t *ulOutCRC);

        void PartialCRC(uint32_t *ulCRC, const unsigned char *sData, uint32_t ulDataLength);

    private:
        uint32_t Reflect(uint32_t ulReflect, const char cChar);
        uint32_t ulTable[256]; // CRC lookup table array.
};

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#endif
